abstract reasoning technique